﻿/**
 * 代码来源于LumaQQ.Net，在此感谢原作者
 * 本人在原代码基础上做了部分修改以适应本人的需要。
 * 请不要将该类库用于非法途径和商业途径，与此产生的一切法律后果与本人无关。
 * 有任何问题，可以访问我的博客：http://baiyafeng.com 留言
 * 使用本类库请遵循GPL v3协议。
 **/


using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace SinaBlogQiangShafa
{
    /// <summary>
    /// 可以被提交到线程池异步处理的接口
    /// 	<remark>abu 2008-03-07 </remark>
    /// </summary>
    public interface ICallable
    {
        /// <summary>
        /// 是否已经在运行
        /// 	<remark>abu 2008-03-07 </remark>
        /// </summary>
        /// <value></value>
        bool IsRunning { get; }
        /// <summary>
        /// WaitCallback回调
        /// 	<remark>abu 2008-03-07 </remark>
        /// </summary>
        /// <param name="state">The state.</param>
        void Call(object state);
    }
    /// <summary>
    /// 可以被提交到线程池定时运行的接口
    /// 	<remark>abu 2008-03-07 </remark>
    /// </summary>
    public interface IRunable : IDisposable
    {
        /// <summary>是否已经在运行
        /// 	<remark>abu 2008-03-07 </remark>
        /// </summary>
        /// <value></value>
        bool IsRunning { get; }
        /// <summary>
        /// 	<remark>abu 2008-03-07 </remark>
        /// </summary>
        /// <param name="state">The state.</param>
        /// <param name="timedOut">if set to <c>true</c> [timed out].</param>
        void Run(object state, bool timedOut);
        /// <summary>
        /// 注册在线程池后的信号变量
        /// 	<remark>abu 2008-03-07 </remark>
        /// </summary>
        /// <value></value>
        WaitHandle WaitHandler { get; set; }
        /// <summary>
        /// 注册后的对象
        /// 	<remark>abu 2008-03-07 </remark>
        /// </summary>
        /// <value></value>
        RegisteredWaitHandle RegisterdHandler { get; set; }
    }

}
